{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# NCF Recommender with Explict Feedback"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this notebook we demostrate how to build a neural network recommendation system, Neural Collaborative Filtering(NCF) with explict feedback. We use Recommender API in Analytics Zoo to build a model, and use optimizer of BigDL to train the model. \n",
    "\n",
    "The system ([Recommendation systems: Principles, methods and evaluation](http://www.sciencedirect.com/science/article/pii/S1110866515000341)) normally prompts the user through the system interface to provide ratings for items in order to construct and improve the model. The accuracy of recommendation depends on the quantity of ratings provided by the user.  \n",
    "\n",
    "NCF([He, 2015](https://www.comp.nus.edu.sg/~xiangnan/papers/ncf.pdf)) leverages a multi-layer perceptrons to learn the user–item interaction function, at the mean time, NCF can express and generalize matrix factorization under its framework. includeMF(Boolean) is provided for users to build a NCF with or without matrix factorization. \n",
    "\n",
    "Data: \n",
    "* The dataset we used is movielens-1M ([link](https://grouplens.org/datasets/movielens/1m/)), which contains 1 million ratings from 6000 users on 4000 movies.  There're 5 levels of rating. We will try classify each (user,movie) pair into 5 classes and evaluate the effect of algortithms using Mean Absolute Error.  \n",
    "  \n",
    "References: \n",
    "* A Keras implementation of Movie Recommendation([notebook](https://github.com/ririw/ririw.github.io/blob/master/assets/Recommending%20movies.ipynb)) from the [blog](http://blog.richardweiss.org/2016/09/25/movie-embeddings.html).\n",
    "* Nerual Collaborative filtering ([He, 2015](https://www.comp.nus.edu.sg/~xiangnan/papers/ncf.pdf))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Intialization"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "import necessary libraries"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Populating the interactive namespace from numpy and matplotlib\n"
     ]
    }
   ],
   "source": [
    "from zoo.pipeline.api.keras.layers import *\n",
    "from zoo.models.recommendation import UserItemFeature\n",
    "from zoo.models.recommendation import NeuralCF\n",
    "from zoo.common.nncontext import init_nncontext\n",
    "import matplotlib\n",
    "from sklearn import metrics\n",
    "from operator import itemgetter\n",
    "from bigdl.dataset import movielens\n",
    "from bigdl.util.common import *\n",
    "\n",
    "matplotlib.use('agg')\n",
    "import matplotlib.pyplot as plt\n",
    "%pylab inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Initilaize NN context, it will get a SparkContext with optimized configuration for BigDL performance."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "sc = init_nncontext(\"NCF Example\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Data Preparation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Download and read movielens 1M data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-08-03T08:13:08.071512Z",
     "start_time": "2017-08-03T08:13:04.077308Z"
    }
   },
   "outputs": [],
   "source": [
    "movielens_data = movielens.get_id_ratings(\"/tmp/movielens/\")\t"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Understand the data. Each record is in format of (userid, movieid, rating_score). UserIDs range between 1 and 6040. MovieIDs range between 1 and 3952. Ratings are made on a 5-star scale (whole-star ratings only). Counts of users and movies are recorded for later use."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-08-03T08:13:08.082461Z",
     "start_time": "2017-08-03T08:13:08.075167Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1000209, 3)\n",
      "(1, 6040, 1, 3952, array([1, 2, 3, 4, 5]))\n"
     ]
    }
   ],
   "source": [
    "min_user_id = np.min(movielens_data[:,0])\n",
    "max_user_id = np.max(movielens_data[:,0])\n",
    "min_movie_id = np.min(movielens_data[:,1])\n",
    "max_movie_id = np.max(movielens_data[:,1])\n",
    "rating_labels= np.unique(movielens_data[:,2])\n",
    "\n",
    "print(movielens_data.shape)\n",
    "print(min_user_id, max_user_id, min_movie_id, max_movie_id, rating_labels)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-08-03T03:45:25.657796Z",
     "start_time": "2017-08-03T03:45:25.650852Z"
    }
   },
   "source": [
    "Transform original data into RDD of sample. \n",
    "We use optimizer of BigDL directly to train the model, it requires data to be provided in format of RDD([Sample](https://bigdl-project.github.io/master/#APIGuide/Data/#sample)). A `Sample` is a BigDL data structure which can be constructed using 2 numpy arrays, `feature` and `label` respectively. The API interface is `Sample.from_ndarray(feature, label)`\n",
    "Here, labels are tranformed into zero-based since original labels start from 1."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-08-03T03:47:57.601392Z",
     "start_time": "2017-08-03T03:47:57.591491Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<zoo.models.recommendation.recommender.UserItemFeature at 0x11473ffd0>,\n",
       " <zoo.models.recommendation.recommender.UserItemFeature at 0x124eb9110>,\n",
       " <zoo.models.recommendation.recommender.UserItemFeature at 0x11473fed0>]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def build_sample(user_id, item_id, rating):\n",
    "    sample = Sample.from_ndarray(np.array([user_id, item_id]), np.array([rating]))\n",
    "    return UserItemFeature(user_id, item_id, sample)\n",
    "pairFeatureRdds = sc.parallelize(movielens_data)\\\n",
    "    .map(lambda x: build_sample(x[0], x[1], x[2]-1))\n",
    "pairFeatureRdds.take(3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-08-03T03:26:59.143086Z",
     "start_time": "2017-08-03T03:26:59.136374Z"
    }
   },
   "source": [
    "Randomly split the data into train (80%) and validation (20%)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-08-03T08:13:10.225186Z",
     "start_time": "2017-08-03T08:13:10.117969Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PythonRDD[3] at RDD at PythonRDD.scala:48"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trainPairFeatureRdds, valPairFeatureRdds = pairFeatureRdds.randomSplit([0.8, 0.2], seed= 1)\n",
    "valPairFeatureRdds.cache()\n",
    "train_rdd= trainPairFeatureRdds.map(lambda pair_feature: pair_feature.sample)\n",
    "val_rdd= valPairFeatureRdds.map(lambda pair_feature: pair_feature.sample)\n",
    "val_rdd.persist()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-08-03T08:13:10.541314Z",
     "start_time": "2017-08-03T08:13:10.534792Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "799923\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[Sample: features: [JTensor: storage: [  1. 661.], shape: [2], float], labels: [JTensor: storage: [2.], shape: [1], float],\n",
       " Sample: features: [JTensor: storage: [  1. 914.], shape: [2], float], labels: [JTensor: storage: [2.], shape: [1], float],\n",
       " Sample: features: [JTensor: storage: [1.000e+00 3.408e+03], shape: [2], float], labels: [JTensor: storage: [3.], shape: [1], float]]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(train_rdd.count())\n",
    "train_rdd.take(3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Build Model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In Analytics Zoo, it is simple to build NCF model by calling NeuralCF API. You need specify the user count, item count and class number according to your data, then add hidden layers as needed, you can also choose to include matrix factorization in the network. The model could be fed into an Optimizer of BigDL or NNClassifier of analytics-zoo. Please refer to the document for more details. In this example, we demostrate how to use optimizer of BigDL. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-08-03T09:39:03.502185Z",
     "start_time": "2017-08-03T09:39:03.477423Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "creating: createZooKerasInput\n",
      "creating: createZooKerasFlatten\n",
      "creating: createZooKerasSelect\n",
      "creating: createZooKerasFlatten\n",
      "creating: createZooKerasSelect\n",
      "creating: createZooKerasEmbedding\n",
      "creating: createZooKerasEmbedding\n",
      "creating: createZooKerasFlatten\n",
      "creating: createZooKerasFlatten\n",
      "creating: createZooKerasMerge\n",
      "creating: createZooKerasDense\n",
      "creating: createZooKerasDense\n",
      "creating: createZooKerasDense\n",
      "creating: createZooKerasModel\n",
      "creating: createZooNeuralCF\n"
     ]
    }
   ],
   "source": [
    "ncf = NeuralCF(user_count=max_user_id, \n",
    "               item_count=max_movie_id, \n",
    "               class_num=5, \n",
    "               hidden_layers=[20, 10], \n",
    "               include_mf = False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Compile model\n",
    "\n",
    "Compile model given specific optimizers, loss, as well as metrics for evaluation. Optimizer tries to minimize the loss of the neural net with respect to its weights/biases, over the training set. To create an Optimizer in BigDL, you want to at least specify arguments: model(a neural network model), criterion(the loss function), traing_rdd(training dataset) and batch size. Please refer to ([ProgrammingGuide](https://bigdl-project.github.io/master/#ProgrammingGuide/optimization/))and ([Optimizer](https://bigdl-project.github.io/master/#APIGuide/Optimizers/Optimizer/)) for more details to create efficient optimizers."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-08-03T09:39:07.359788Z",
     "start_time": "2017-08-03T09:39:07.321748Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "creating: createAdam\n",
      "creating: createZooKerasSparseCategoricalCrossEntropy\n",
      "creating: createZooKerasSparseCategoricalAccuracy\n"
     ]
    }
   ],
   "source": [
    "ncf.compile(optimizer= \"adam\",\n",
    "            loss= \"sparse_categorical_crossentropy\",\n",
    "            metrics=['accuracy'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Collect logs\n",
    "\n",
    "You can leverage tensorboard to see the summaries."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "tmp_log_dir = create_tmp_path()\n",
    "ncf.set_tensorboard(tmp_log_dir, \"training_ncf\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Train the model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-08-04T02:28:52.344745Z",
     "start_time": "2017-08-04T02:28:52.274699Z"
    }
   },
   "outputs": [],
   "source": [
    "ncf.fit(train_rdd, \n",
    "        nb_epoch= 10, \n",
    "        batch_size= 8000, \n",
    "        validation_data=val_rdd)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Prediction\n",
    "\n",
    "Zoo models make inferences based on the given data using model.predict(val_rdd) API. A result of RDD is returned. predict_class returns the predicted label. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[5, 5, 4, 4, 4]"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results = ncf.predict(val_rdd)\n",
    "results.take(5)\n",
    "\n",
    "results_class = ncf.predict_class(val_rdd)\n",
    "results_class.take(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In Analytics Zoo, Recommender has provied 3 unique APIs to predict user-item pairs and make recommendations for users or items given candidates.\n",
    "Predict for user item pairs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "UserItemPrediction [user_id: 1, item_id: 1193, prediction: 5, probability: 0.476881682873]\n",
      "UserItemPrediction [user_id: 1, item_id: 2804, prediction: 5, probability: 0.451132953167]\n",
      "UserItemPrediction [user_id: 1, item_id: 594, prediction: 4, probability: 0.481520324945]\n",
      "UserItemPrediction [user_id: 1, item_id: 2398, prediction: 4, probability: 0.415099412203]\n",
      "UserItemPrediction [user_id: 1, item_id: 1097, prediction: 4, probability: 0.453616738319]\n"
     ]
    }
   ],
   "source": [
    "userItemPairPrediction = ncf.predict_user_item_pair(valPairFeatureRdds)\n",
    "for result in userItemPairPrediction.take(5): print(result)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Recommend 3 items for each user given candidates in the feature RDDs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "UserItemPrediction [user_id: 4904, item_id: 2019, prediction: 5, probability: 0.9045779109]\n",
      "UserItemPrediction [user_id: 4904, item_id: 318, prediction: 5, probability: 0.902075052261]\n",
      "UserItemPrediction [user_id: 4904, item_id: 912, prediction: 5, probability: 0.866227447987]\n",
      "UserItemPrediction [user_id: 3456, item_id: 1356, prediction: 5, probability: 0.832679390907]\n",
      "UserItemPrediction [user_id: 3456, item_id: 1374, prediction: 5, probability: 0.799858570099]\n"
     ]
    }
   ],
   "source": [
    "userRecs = ncf.recommend_for_user(valPairFeatureRdds, 3)\n",
    "for result in userRecs.take(5): print(result)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Recommend 3 users for each item given candidates in the feature RDDs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "UserItemPrediction [user_id: 195, item_id: 3456, prediction: 5, probability: 0.525387585163]\n",
      "UserItemPrediction [user_id: 1926, item_id: 3456, prediction: 5, probability: 0.483191937208]\n",
      "UserItemPrediction [user_id: 4298, item_id: 3456, prediction: 5, probability: 0.468448847532]\n",
      "UserItemPrediction [user_id: 1271, item_id: 1080, prediction: 5, probability: 0.747303187847]\n",
      "UserItemPrediction [user_id: 2447, item_id: 1080, prediction: 5, probability: 0.743132531643]\n"
     ]
    }
   ],
   "source": [
    "itemRecs = ncf.recommend_for_item(valPairFeatureRdds, 3)\n",
    "for result in itemRecs.take(5): print(result)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Evaluation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Plot the train and validation loss curves"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2017-08-03T09:50:45.229520Z",
     "start_time": "2017-08-03T09:50:44.643083Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5,1,'loss')"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nA4oXoWsgjqd6AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#retrieve train and validation summary object and read the loss data into ndarray's. \n",
    "train_loss = np.array(ncf.get_train_summary(\"Loss\"))\n",
    "val_loss = np.array(ncf.get_validation_summary(\"Loss\"))\n",
    "#plot the train and validation curves\n",
    "# each event data is a tuple in form of (iteration_count, value, timestamp)\n",
    "plt.figure(figsize = (12,6))\n",
    "plt.plot(train_loss[:,0],train_loss[:,1],label='train loss')\n",
    "plt.plot(val_loss[:,0],val_loss[:,1],label='val loss',color='green')\n",
    "plt.scatter(val_loss[:,0],val_loss[:,1],color='green')\n",
    "plt.legend();\n",
    "plt.xlim(0,train_loss.shape[0]+10)\n",
    "plt.grid(True)\n",
    "plt.title(\"loss\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "plot accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize = (12,6))\n",
    "top1 = np.array(ncf.get_validation_summary(\"Top1Accuracy\"))\n",
    "plt.plot(top1[:,0],top1[:,1],label='top1')\n",
    "plt.title(\"top1 accuracy\")\n",
    "plt.grid(True)\n",
    "plt.legend();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.10"
  },
  "toc": {
   "colors": {
    "hover_highlight": "#DAA520",
    "navigate_num": "#000000",
    "navigate_text": "#333333",
    "running_highlight": "#FF0000",
    "selected_highlight": "#FFD700",
    "sidebar_border": "#EEEEEE",
    "wrapper_background": "#FFFFFF"
   },
   "moveMenuLeft": true,
   "nav_menu": {
    "height": "141px",
    "width": "251px"
   },
   "navigate_menu": true,
   "number_sections": false,
   "sideBar": true,
   "threshold": 4,
   "toc_cell": false,
   "toc_section_display": "block",
   "toc_window_display": true,
   "widenNotebook": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
